/**
 * @file 地图状态类型定义
 * @description 定义与地图相关的状态管理类型
 * @date 2024-07-15
 */

import type { MapProps, LocationWithAddress } from '../map';

/**
 * 地图类型枚举
 */
export enum MapType {
  NORMAL = 'normal',
  SATELLITE = 'satellite',
  HYBRID = 'hybrid'
}

/**
 * 地图加载状态枚举
 */
export enum MapLoadStatus {
  INITIAL = 'initial',
  LOADING = 'loading',
  LOADED = 'loaded',
  ERROR = 'error'
}

/**
 * 地图功能状态接口
 */
export interface MapCapabilities {
  trackDrawing: boolean;
  geolocation: boolean;
  trafficLayer: boolean;
  satelliteLayer: boolean;
}

/**
 * 定位状态
 */
export interface LocationState {
  /** 当前位置 */
  currentLocation: LocationWithAddress | null;
  /** 是否跟踪定位 */
  trackingEnabled: boolean;
  /** 定位精度 */
  accuracy: number;
}

/**
 * 地图状态
 */
export interface MapState {
  /** 地图状态 */
  status: MapLoadStatus;
  /** 错误信息 */
  error: string | null;
  /** 地图功能状态 */
  capabilities: MapCapabilities;
  /** 是否正在加载中 */
  loading: boolean;
  /** 是否正在加载轨迹插件 */
  loadingTrack: boolean;
  /** 最后加载时间 */
  lastLoadTime: number | null;
  /** 地图类型 */
  mapType: MapType;
  /** 地图属性配置 */
  mapProps: MapProps;
  /** 3D视图是否启用 */
  enable3D: boolean;
  /** 定位状态 */
  location: LocationState;
} 